package ru.tennisworld.match.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import ru.tennisworld.match.dto.match.CreateMatchRequestDto;
import ru.tennisworld.match.dto.match.MatchFullResponseDto;
import ru.tennisworld.match.dto.match.UpdateMatchRequestDto;

@RestController
@RequestMapping("/match")
@Api("Работа с матчами")
public interface MatchController {

    @GetMapping(path = "/{id}")
    @ApiOperation("Получение информации по матчу")
    ResponseEntity<MatchFullResponseDto> getMatchFullInfo(
            @ApiParam("Идентификатор матча")
            @PathVariable("id") String matchId
    );

    @PostMapping(path = "/create")
    @ApiOperation("Создание матча")
    ResponseEntity<MatchFullResponseDto> createSingleMatch(
            @RequestBody CreateMatchRequestDto request
    );

    @PutMapping(path = "/{id}/update")
    @ApiOperation("Обновление информации по матчу")
    ResponseEntity<MatchFullResponseDto> updateSingleMatch(
            @PathVariable("id") String matchId,
            @RequestBody UpdateMatchRequestDto request
    );
}
